package br.com.afi.util.hibernate;

import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;

import org.hibernate.Query;

/**
 * Essa classe possui métodos utilitários para {@link Query}
 * 
 * @author André de Fontana Ignacio
 * @version 1.0
 */
public class QueryUtil {
	
	/**
	 * Construtor
	 */
	private QueryUtil()
	{
		super();
	}
	
	/**
	 * Preenche os paramêtros de um query através de um Map.
	 * 
	 * @param q Query
	 * @param parameters Paramêtros da Query
	 */
	public static void fillParameters( Query q, Map<String, Object> parameters )
	{
		if ( parameters != null )
		{
			for ( Entry<String, Object> e : parameters.entrySet() )
			{
				final Object value = e.getValue();
				if ( value instanceof Collection<?> )
				{
					final Collection<?> c = ( Collection<?> ) value;
					q.setParameterList( e.getKey(), c );
				}
				else
				{
					q.setParameter( e.getKey(), value );
				}
			}
		}
	}
}
